package mtest3.day4;

public class SequenStack implements IStack{
    Object[] datas;
    int top; // top 是栈顶元素的再下一个位置的索引


    public SequenStack(int maxSize) {
        datas = new Object[maxSize];
        top = 0;
    }

    @Override
    public void clear() {
        top = 0;
    }

    @Override
    public int length() {
        return top;
    }

    @Override
    public boolean isEmpty() {
        return top == 0;
    }

    @Override
    public void push(Object e) {
        if (top == datas.length) {
            throw new RuntimeException("栈满了");
        }
        //添加数据到栈顶
        datas[top++] = e;
    }

    /**
     * 删除栈顶元素 并且返回这个元素
     *
     * @return
     */
    @Override
    public Object pop() {

        if (isEmpty()) {
            //如果是空的栈 返回null
            return null;
        }
//        非空就返回数据  注意 是--top
        return datas[--top];
    }

    /**
     * 返回栈顶元素
     *
     * @return
     */
    @Override
    public Object peek() {
        if (isEmpty()) {
            //如果是空的栈 返回null
            return null;
        }
//        非空就返回数据  注意 是--top
        return datas[top - 1];
    }

    @Override
    public String toString() {
        String text = "数据：";
        for (int i = 0; i < top; i++) {
            text += datas[i] + ",";
        }
        return text;
    }
}
